function Wizard(){}

/**
 * Cria o componente Wizard. Recebe dois parâmetros. O parâmetro selector é obrigatório.
 * @param selector - Seletor da div Wizard.
 * @param options - Json com as opções para a criação da tab. <br>
 * <ul>Parâmetros do options: <br>  
 * 		<li><b>disablePreviousStep</b></li> - Desativa botão 'Anterior' - Default: false <br> 
 *     			<b> * Boolean:</b> Determina se o botão anterior ficará desativado. True = desativado. False = ativado;
 *      <br>
 * 		<li><b>selectedItem</b></li> - Defini a etapa que ficará ativa ao criar o wizard. Default: {step: -1} <br> 
 *     			<b> * Object:</b> Por padrão {step: -1} significa que a etapa ativa será o que tem a classe "active". Alterar o número step seria definir a etapa ativa conforme o seu indice. 
 * <ul>
 * 	   <br><br> 
 *     
 *     <b>Exemplo</b><br>
 * 
 *     	var options = {<br>
 *			 disablePreviousStep: true,<br>
 *			 selectedItem: {step: 1}<br>
 *	};<br><br>
 *	
 *	wizard.<b>createWizard("#formulario #wizard", options)</b>;
 *  </ul>  
 */
Wizard.prototype.createWizard = function(selector, options){

	var opt = {
		disablePreviousStep: false,  
		selectedItem: {step:-1} // defini o step ativo -1 verificando qual tem a classe 'active'
	};

	if(options){
		
		opt = $.extend(opt, options);
		
	}
	
	$(selector).wizard(opt);
	
		
};

/**
 * Move para a etapa anterior. Recebe um parâmetro. O parâmetro selector é obrigatório.
 * @param selector - Seletor da div Wizard.<br><br>
 *     
 *     <b>Exemplo</b><br>
 * 
 *	$('#btnWizardPrev').on('click', function () {
 *			wizard.previous("#formulario #wizard");
 *	});  
 */
Wizard.prototype.previous = function(selector){
	$(selector).wizard('previous');
};

/**
 * Move para a próxima etapa. Recebe um parâmetro. O parâmetro selector é obrigatório.
 * @param selector - Seletor da div Wizard.<br><br>
 *     
 *     <b>Exemplo</b><br>
 * 
 *	$('#btnWizardNext').on('click', function () {
 *			var item = wizard.selectItem("#formulario #wizard");
 *			console.log(item.step);
 *	});  
 */
Wizard.prototype.next = function(selector){
	$(selector).wizard('next', 'foo');
};

/**
 * Retorna o índice da etapa atual. Recebe um parâmetro. O parâmetro selector é obrigatório.
 * @param selector - Seletor da div Wizard.<br><br>
 *     
 *     <b>Exemplo</b><br>
 * 
 *	$('#btnWizardStep').on('click', function () {
 *			wizard.selectItem("#formulario #wizard");
 *	});  
 */
Wizard.prototype.selectItem = function(selector){
	return $(selector).wizard('selectedItem');
};

/**
 * Move para a etapa desejada. Recebe dois parâmetros. Sendo selector e index obrigatórios.
 * @param selector - Seletor da div Wizard. 
 * @param index - Indíce da etapa desejada.
 * <ul>Opções index: <br>
 *     <li><b>Integer: </b></li> Número de indíce da etapa desejada. 
 *     <li><b>String: </b></li> Valor do data-name da etapa desejada. 
 * </ul>   <br><br>
 *     <b>Exemplo</b><br>
 * 
 *	wizard.setSelectItem("#formulario #wizard", 4);<br>
 *  wizard.setSelectItem("#formulario #tabs", "contato_step");<br>
 *
 */
Wizard.prototype.setSelectItem = function(selector, index){
	$(selector).wizard('selectedItem', {
		step: index
	});
};

/**
 * Cria uma etapa. Recebe três parâmetros. Todos são obrigatórios.
 * @param selector - Seletor da div Wizard. 
 * @param content - Json com o conteúdo da etapa. 
 * @param index - Indíce para a etapa. <br>
 * <ul>Parâmetros do conteudo: <br>  
 * 		<li><b>badgeVisible</b></li> - Ativa numerador da etapa - Default: false <br> 
 *     			<b> *** Boolean:</b> True = ativado. False = desativado;
 *      <br>
 * 		<li><b>badgeClass</b></li> - Defini class personalizada para o numerador. Default: badge <br> 
 *      <br>	
 * 		<li><b>badge</b></li> - Defini título para o enumerador. Default: null <br> 
 *      <br>	
 * 		<li><b>stepClass</b></li> - Defini class personalizada para o step (Após o título). Default: null<br> 
 *      <br>	
 * 		<li><b>title</b></li> - Defini título para o step. Default: null<br> 
 *      <br>	
 * 		<li><b>pane</b></li> - Texto que será inserido na etapa. Default: null<br> 
 *     			  
 * <ul>
 * 
 *    <br><br>
 * 
 *     <b>Exemplo</b><br>
 * 
 *	var item = wizard.selectItem("#formulario #wizard");<br>
					
					var conteudo = [<br>
							{<br>
								badgeVisible: true,<br>
								badgeClass: 'classePersonalizada',<br>
								badge: 'Add',<br>
								stepClass: 'chevron',<br>
								title: titulo,<br>
								pane: texto<br>
							}<br>
					];<br><br>
				
					wizard.createSubWizard("#formulario #wizard", conteudo, item.step);
 *
 */
Wizard.prototype.createSubWizard = function(selector, content, index){
	
	var i = -1;
	
	if(index !== undefined){
		i = index;
	}

	$(selector).wizard('addSteps', i, content);

};

/**
 * Remove uma etapa. Recebe três parâmetros.  Sendo selector e index obrigatórios.
 * 
 * @param selector - Seletor da div Wizard. 
 * @param index - Index da primeira etapa a ser excluida.
 * @param howMany - Quantidade de etapas que serão excluídas a partir da etapa selecionada no index - Default: 1.  <br>
 * 
 *    <br><br>
 * 
 *     <b>Exemplo</b><br>
 *     
 *     var item = wizard.selectItem("#formulario #wizard");<br>
 * 
 * 		wizard.removeSubWizard("#formulario #wizard", item.step, 2);
 *
 */
Wizard.prototype.removeSubWizard = function(selector, index, howMany){
	
	$(selector).wizard('removeSteps', index, howMany);

};

/**
 * Destroi o Wizard. Recebe um parâmetro obrigatório.
 * 
 * @param selector - Seletor da div Wizard.
 *    <br><br>
 * 
 *     <b>Exemplo</b><br>
 *      * 
 * 		wizard.destroyWizard("#formulario #wizard");
 *
 */
Wizard.prototype.destroyWizard = function(selector){

	$(selector).wizard('destroy');

};

var wizard = new Wizard();
